package com.jsl.action;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONValidator;
import com.jsl.NCCUtil;
import com.jsl.NCCloudService;
import com.jsl.PushLog;
import com.jsl.ResultInfo;
import net.sf.json.JSONArray;
import weaver.conn.RecordSet;
import weaver.file.Prop;
import weaver.general.BaseBean;
import weaver.general.TimeUtil;
import weaver.interfaces.workflow.action.Action;
import weaver.security.freeValidators.JsonValidator;
import weaver.soa.workflow.request.RequestInfo;
import weaver.workflow.request.RequestManager;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Description 合同
 * @Author xw
 * @Date 2021/12/21
 */
public class HTAction extends BaseBean implements Action {
    @Override
    public String execute(RequestInfo requestInfo) {
        return null;
    }
//    @Override
//    public String execute(RequestInfo info) {
//        writeLog("**********************进入 HTAction **********************");
//
//        String requestid = info.getRequestid();
//        String workflowid = info.getWorkflowid();
//        RequestManager requestManager = info.getRequestManager();
//        String formtable = NCCUtil.getFormtable(workflowid);
//
//        writeLog("[HTAction.execute] workflowid:" + workflowid + " formtable:" + formtable + " requestid:" + requestid);
//
//        String message="";
//        ResultInfo resultInfo = new ResultInfo();
//        String lcbh = "";
//        String lclx = "";
//        String requestBody = ""; // 请求参数
//        String result = ""; // 返回结果
//        String sql = "";
//        boolean flag = true;
//        RecordSet recordSet = new RecordSet();
//        try {
//            sql = "select * from " + formtable + " where requestid=" + requestid;
//            recordSet.execute(sql);
//            if (recordSet.next()) {
//                List<HTDataInfo> paramDataList = new ArrayList<>();
//                Map<String, Object> paramsMap = new HashMap<>();
//                String pk_org = recordSet.getString("cwzz"); // 财务组织编码
//                pk_org = NCCUtil.getPkOrganization(pk_org); // 获取组织主键
//                String ctname = recordSet.getString("hth"); // 合同名称
//                String cvendorid = recordSet.getString("gyszj"); // 供应商主键
//                String ctrantypeid = recordSet.getString("htlx"); // 合同类型
//                String vtrantypecode = NCCUtil.getPkContractType(ctrantypeid); // 合同类型编号
//                String subscribedate = recordSet.getString("htqdrq") + " 00:00:00"; // 合同签订日期
//                String valdate = TimeUtil.getCurrentTimeString(); // 计划生效日期
//                String invallidate = "5000-01-01 00:00:00"; // 计划终止日期
//
//                String corigcurrencyid = recordSet.getString("bz1"); // 币种编码
//                String vdef12 = recordSet.getString("zzgyszj"); // 供应商最终编码
//                String fstatusflag = "1"; // 合同状态
//                String bsc = "N"; // 合同状态
//
//                paramsMap.put("pk_org", pk_org);
//                paramsMap.put("ctname", ctname);
//                paramsMap.put("cvendorid", cvendorid);
//                paramsMap.put("ctrantypeid", ctrantypeid);
//                paramsMap.put("vtrantypecode", vtrantypecode);
//                paramsMap.put("subscribedate", subscribedate);
//                paramsMap.put("valdate", valdate);
//                paramsMap.put("invallidate", invallidate);
//
//                paramsMap.put("corigcurrencyid", corigcurrencyid);
//                paramsMap.put("vdef12", vdef12);
//                paramsMap.put("fstatusflag", fstatusflag);
//                paramsMap.put("bsc", bsc);
//
//                List<Map<String, String>> paramsList = new ArrayList<>();
//                RecordSet recordSet2 = new RecordSet();
//                sql = "select t2.* from " + formtable + " t1," + formtable + "_dt1 t2 where requestId=" + requestid + " and t1.id=t2.mainid";
//                recordSet2.execute(sql);
//                while (recordSet2.next()) {
//
//                    Map<String, String> detailParamsMap = new HashMap<>();
//                    String pk_marbasclass = recordSet2.getString("wlfl"); // 物料分类
//                    String pk_material = recordSet2.getString("wl"); // 物料
//                    String nastnum = recordSet2.getString("sl"); // 数量
//                    String castunitid = recordSet2.getString("dwbh"); // 单位
//                    String nqtorigtaxprice = recordSet2.getString("djyd"); // 单价
//                    String norigtaxmny = recordSet2.getString("jeyd"); // 金额
//                    String ctaxcodeid = recordSet2.getString("sm"); // 税码
//
//                    if("0.00".equals(nqtorigtaxprice) || nqtorigtaxprice == null || "".equals(nqtorigtaxprice)){
//                        nqtorigtaxprice = "0.01";
//                    }
//
//                    if("0.00".equals(nastnum) || nastnum == null || "".equals(nastnum)){
//                        nastnum = "0.01";
//                    }
//
//
//                    detailParamsMap.put("pk_marbasclass", pk_marbasclass);
//                    detailParamsMap.put("pk_material", pk_material);
//                    detailParamsMap.put("nastnum", nastnum);
//                    detailParamsMap.put("castunitid", castunitid);
//                    detailParamsMap.put("nqtorigtaxprice", nqtorigtaxprice);
//                    //   detailParamsMap.put("norigtaxmny", norigtaxmny);
//                    detailParamsMap.put("ctaxcodeid", ctaxcodeid);
//                    detailParamsMap.put("vbdef12", vdef12);
//
//                    paramsList.add(detailParamsMap);
//                }
//
//                final HTDataInfo htDataInfo = new HTDataInfo(paramsMap, paramsList);
//                paramDataList.add(htDataInfo);
//
//                requestBody = JSON.toJSONString(paramDataList);
//                writeLog("[HTAction.execute] requestBody:" + requestBody);
//
//                String apiUrl = Prop.getPropValue("JslWorkflow", "purdaily_save_apiUrl");
//                String approve_apiUrl = Prop.getPropValue("JslWorkflow", "purdaily_approve_apiUrl");
//                String validate_apiUrl = Prop.getPropValue("JslWorkflow", "purdaily_validate_apiUrl");
//
//                // 拿到返回数据，传入apiUrl、请求参数
//                result = NCCloudService.pushData(apiUrl, requestBody);
//                //字符串转类，获取采购合同主键
//                try{
//                    JSONObject jsonObject = JSONObject.parseObject(result);
//                    String str = jsonObject.getJSONArray("data").getJSONObject(0).getJSONObject("ct.ct_pu").getString("pk_ct_pu");
//                    List<String> strings = new ArrayList<>();
//                    strings.add(str);
//                    String jsonString = JSON.toJSONString(strings);
//                    writeLog("[HTAction.execute] jsonString:" + jsonString);
////                    String approveStr = NCCloudService.pushData(approve_apiUrl, jsonString);
//                    String validateStr = NCCloudService.pushData(validate_apiUrl, jsonString);
////                    JSONObject appjsonObject = JSONObject.parseObject(approveStr);
//                    JSONObject valijsonObject = JSONObject.parseObject(validateStr);
////                    writeLog("[HTAction.execute] appjsonObjectMessage:" + appjsonObject.getString("message"));
//                    writeLog("[HTAction.execute] valijsonObjectMessage:" + valijsonObject.getString("message"));
//                }catch (Exception e){
//                    flag = false;
//                    writeLog(e);
//                }
//
//                JSONValidator validator = JSONValidator.from(result);
//                ResultInfo resultMap = null;
//                String code = "";
//                if (validator.validate()) {
//                    resultMap = JSONObject.parseObject(result, ResultInfo.class);
//                    code = resultMap.getCode();
//
//                } else {
//                    message = result;
//                }
//
//                if ("0".equals(code)) {
//                    message = "采购合同数据传输成功！";
//                    resultInfo.setSuccess("true");
//                    resultInfo.setCode("0");
//                    Object data = resultMap.getData();
//
//                } else {
//                    message = resultMap.getMessage();
//                    resultInfo.setSuccess("false");
//                    resultInfo.setCode(code);
//                    Object data = resultMap.getData();
//
//                }
//                writeLog("[HTAction.execute] resultMap:"+resultMap);
//
//                resultInfo.setMessage(message);
//            }
//
//        } catch (Exception e) {
//            flag=false;
//            message=e.toString();
//            writeLog("[HTAction.execute] NCC付款推送失败 ERROR:"+message);
//            writeLog(e);
//
//        }
//        writeLog("[HTAction.execute] message:"+message);
//
//        if (!"0".equals(resultInfo.getCode()) || !flag) {
//            flag=false;
//            requestManager.setMessageid(requestid);
//            requestManager.setMessage("接口调用失败");
//            requestManager.setMessagecontent("接口调用失败 ERROR:"+message);
//        }
//        Map<String, String> logParams = new HashMap<>();
//        logParams.put("lcbt", requestid);
//        logParams.put("lcbh", lcbh);
//        logParams.put("jklx", lclx);
//        logParams.put("tscs", requestBody);
//        logParams.put("fhjg", result);
//        logParams.put("fhxx", message);
//        logParams.put("tszt", resultInfo.getSuccess());
//
//        PushLog.addPushLog(logParams);
//
//        return ((flag) ? SUCCESS : FAILURE_AND_CONTINUE);
//
//    }
//
//    public static void main(String[] args) {
//        Map<String, Object> btMap = new HashMap<>();
//        List<Map<String, String>> btList = new ArrayList<>();
//        btMap.put("pk_org", "00011110000000006FRW");
//        btMap.put("vtrantypecode", "Z2-01");
//        btMap.put("ctname", "1904261710");
//        btMap.put("invallidate", "2019-04-24 23:59:59");
//
//        Map<String, String> btiMap = new HashMap<>();
//        btiMap.put("pk_material", "100211100000000007SY");
//        btiMap.put("nnum", "10");
//        btiMap.put("norigmny", "1000");
//        btList.add(btiMap);
//
//        HTDataInfo htDataInfo = new HTDataInfo(btMap, btList);
//        List<HTDataInfo> paramDataList = new ArrayList<>();
//        paramDataList.add(htDataInfo);
//
//        System.out.println(JSON.toJSONString(paramDataList));
//    }
}
